package la.iok.hzsvn.lewin.movie.service;

import la.iok.hzsvn.lewin.movie.core.Token;
import la.iok.hzsvn.lewin.movie.entity.KeyValue;
import la.iok.hzsvn.lewin.mybatis.service.BaseService;
import la.iok.hzsvn.share.annotations.NotNull;
import la.iok.hzsvn.share.annotations.Nullable;

public interface KeyValueService extends BaseService<KeyValue,Long> {
    /**
     * 包月的key
     */
    String month = "month";
    /**
     * 包季的key
     */
    String season = "season";
    /**
     * 包年的key
     */
    String year = "year";
    /**
     * 是否启用obs的客户端读的key
     */
    String obsEnableClientReadKey = "enableClientReadOfObs";
    /**
     * 是否启用obs的客户端写的key
     */
    String obsEnableClientWriteKey = "enableClientWriteOfObs";
    /**
     * vip房间的价格。
     * @param type 时长类型。
     * @return vip房间价格
     */
    Float VIPRoomPrice(@Nullable String type);

    /**
     * 更新VIP房间的价格
     * @param type 时长类型,包月：month;包季:season;包年:year
     * @param price 对应的价格
     */
    void updateVIPRoomPrice(@Nullable String type,@Nullable Float price);

    /**
     * 判断obs的客户端读权限是否开启
     * @return 开启返回true,否则false
     */
    boolean obsReadEnabled();

    /**
     * 开启obs客户端读权限
     */
    void enableObsRead(@NotNull Token token);

    /**
     * 取消客户端obs读权限
     */
    void cancelObsRead(@NotNull Token token);

    /**
     * 判断obs的客户端写权限是否开启
     * @return 开启返回true,否则false
     */
    boolean obsWriteEnabled();
    /**
     * 开启obs客户端读权限
     */
    void enableObsWrite(@NotNull Token token);

    /**
     * 取消客户端obs读权限
     */
    void cancelObsWrite(@NotNull Token token);
}
